/**
 * 136. 只出现一次的数字
 * https://leetcode-cn.com/problems/single-number/
 */
public class Solutions_136 {
    public static void main(String[] args) {
        int[] nums = {2, 2, 1};  // output: 1
//        int[] nums = {4, 1, 2, 1, 2};  // output: 4

        int result = singleNumber(nums);
        System.out.println(result);
    }

    public static int singleNumber(int[] nums) {
        int res = 0;
        // 题目说明了 nums 中只有一个元素出现一次，其他元素都出现两次
        // 针对异或的规律：两个相同的数，异或的结果为 0，例如 7(0b111) ^ 7(0b111) = 0
        for (int num : nums) {
            res = res ^ num;
        }
        // 最终的 res 即是只出现一次的数字
        return res;
    }
}
